/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"C696BBE1-82D7-4CBA-B0FA-305754ADA3A5",variableType:4}
 */
var fcentro = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"546B240F-6475-49EA-A675-24551A2861BB",variableType:4}
 */
var fcuenta = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"95D128F4-2B3E-4A17-B8C7-1BCDB63405F8",variableType:4}
 */
var fdivision = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"FD71A8A1-7712-4CA8-9ED1-90F6A7540030",variableType:8}
 */
var fsaldo_actual = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"16A8F14D-0917-4B19-9CB5-E951363BFD1F",variableType:8}
 */
var fsaldo_anterior = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"4AB35D27-FCF5-403F-8DE5-D8996AAC1D1C",variableType:8}
 */
var fsaldo_dolar = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"CA938CD3-D676-46CF-9AD3-CA34733DA106",variableType:8}
 */
var fsaldo_pesos = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"0F7225B5-35B0-4CCC-B9AA-64188DD70845",variableType:8}
 */
var ftot_debe = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"31F246E6-0746-48D7-A828-80F07BD6BDF8",variableType:8}
 */
var ftot_haber = null;

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"B67FC98A-4401-44BE-8FFC-78554DF70D9F"}
 * @AllowToRunInFind
 */
function onShow(firstShow, event) {
	fcentro 					= null
	fcuenta 					= null
	fdivision 					= null
	
	globals.gmoneda_consulta 	= 1

	fsaldo_anterior 	= 0
	ftot_debe 			= 0
	ftot_haber 			= 0
	fsaldo_actual 		= 0

	controller.loadRecords(null)

}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"600C2FA8-26E8-4805-AD8E-9B865DF793A3"}
 * @AllowToRunInFind
 */
function onAction_buscar(event) {
	if (fcuenta == null)
	{
		 globals.DIALOGS.showWarningDialog("Aviso","Debe ingresar una cuenta","Ok")					
		 return
	}
	if (((globals.gAnioHasta * 100) + globals.gMesHasta) < ((globals.gAnioDesde * 100) + globals.gMesDesde))
	{
		globals.DIALOGS.showWarningDialog("Aviso","El Intervalo ingresado es inválido","Ok")
		return
	}
	var $anio
	var $mes
	// calcula saldo anterior
	if (globals.gMesDesde == 1)
	{
		$mes = 12
		$anio = globals.gAnioDesde -1
	}
	else
	{
		$mes = globals.gMesDesde - 1
		$anio = globals.gAnioDesde
	}
	fsaldo_anterior = 0
	fsaldo_anterior = globals.gcalcular_saldo(fcuenta,fdivision,fcentro,0,0,$mes,$anio,fsaldo_pesos,fsaldo_dolar,globals.gmoneda_consulta)

	var estado = controller.find()
	if (estado == false)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Error al hacer el Find","Ok")
		return
	}

	var $desde = new Date (globals.gAnioDesde, globals.gMesDesde -1, 1)
	var $hasta = new Date (globals.gAnioHasta, globals.gMesHasta -1, 31)
	var fdes = utils.dateFormat($desde,"dd-MM-yyyy")
	var fhas = utils.dateFormat($hasta,"dd-MM-yyyy")
	
	asiento_to_asiento_cab.fecha 	= "#" + fdes + "..." + fhas + "|dd-MM-yyyy"
	ftot_debe 						= 0
	ftot_haber 						= 0
	fsaldo_actual 					= 0	
	cuentas_id 						= fcuenta
	if (fdivision)
	{
		division = fdivision
	}
	if (fcentro)
	{
		centro = fcentro
	}
	var res = controller.search()
	if (res == 0)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Sin movimientos","Ok")
	    return
	}
	var $cant = databaseManager.getFoundSetCount(foundset)
	for (var i = 1 ; i <= $cant ; i++)
	{
		var $rcd = foundset.getRecord(i)
		ftot_debe  += $rcd.importe_debe_cons
		ftot_haber += $rcd.importe_haber_cons
	}
	fsaldo_actual = fsaldo_anterior + ftot_debe - ftot_haber
}

/**
 * @properties={typeid:24,uuid:"A44D5F6E-8303-440D-8597-8A49B214AE22"}
 */
function onAction_centro() {
	fcentro = null
}

/**
 * @properties={typeid:24,uuid:"B8E1727B-769A-4DD2-80AE-309667DEA274"}
 */
function onAction_division() {
	fdivision = null
}

/**
 * @properties={typeid:24,uuid:"0E531D2C-241C-44C2-8283-939FAD655615"}
 */
function imprimir() {
/*	forms.mayor_impresion_vis.pcuenta 	= fcuenta
	forms.mayor_impresion_vis.pdmes 	= globals.gMesDesde
	forms.mayor_impresion_vis.pdano 	= globals.gAnioDesde
	forms.mayor_impresion_vis.phmes 	= globals.gMesHasta
	forms.mayor_impresion_vis.phano 	= globals.gAnioHasta
	forms.mayor_impresion_vis.controller.loadRecords(foundset)
	forms.mayor_impresion_vis.controller.showPrintPreview()*/
	jasper('impresion')
}

/**
 * @properties={typeid:24,uuid:"73E08FCF-6FB1-4A91-B196-8DD9C6A906EA"}
 */
function pdf()
{
/*	forms.mayor_impresion_vis.pcuenta 	= fcuenta
	forms.mayor_impresion_vis.pdmes 	= globals.gMesDesde
	forms.mayor_impresion_vis.pdano 	= globals.gAnioDesde
	forms.mayor_impresion_vis.phmes 	= globals.gMesHasta
	forms.mayor_impresion_vis.phano 	= globals.gAnioHasta
	forms.mayor_impresion_vis.controller.loadRecords(foundset)
	globals.metodoPdf('mayor_impresion_vis','mayor - ' + globals.glegajo,true)*/
	jasper('pdf')
}

/**
 * @param {String} tipo
 * @properties={typeid:24,uuid:"86E00822-6160-4C0E-9F44-6CA3226182A5"}
 */
function jasper(tipo)
{
	if (foundset.getSize() == 0)
	{
		globals.DIALOGS.showInfoDialog('Aviso','No hay datos, por favor verifique su consulta','OK')
		return
	}
	var $cols 		= new Array('cuenta_impresion','division','centro','leyenda','numero','importe_debe_cons','importe_haber_cons','columna','total_debe_pesos','total_haber_pesos','cuentas_id','asiento_to_asiento_cab.fecha')
	var $ds 		= databaseManager.convertToDataSet( foundset, $cols)
	$ds.setColumnName(6,'importe_debe')
	$ds.setColumnName(7,'importe_haber')
	$ds.setColumnName(12,'fecha')
	$ds.addColumn('saldo')
	
	var $texto		 	= 'S A L D O   A N T E R I O R'
	var $reg = new Array(asiento_to_cuentas.cuenta_impresion,null,null,$texto,null,null,null,'A',0,0,fcuenta,null,fsaldo_anterior)
	$ds.addRow(1,$reg)

	$texto 	= 'T O T A L'
	$reg 	= new Array(asiento_to_cuentas.cuenta_impresion,null,null,$texto,null,ftot_debe,ftot_haber,'T',0,0,fcuenta,null,null)
	$ds.addRow($reg)
		
	$texto = 'S A L D O   A C T U A L'
	$reg = new Array(asiento_to_cuentas.cuenta_impresion,null,null,$texto,null,null,null,'U',0,0,fcuenta,null,fsaldo_actual)
	$ds.addRow($reg)
		
	var $params = {
		fecha_desde: application.getValueListDisplayValue('varios_mes_entero',globals.gMesDesde) + ' de '+ globals.gAnioDesde,
		fecha_hasta: application.getValueListDisplayValue('varios_mes_entero',globals.gMesHasta) + ' de '+ globals.gAnioHasta,
		userv: usuarios_to_uservs.razon_social
	}
	globals.metodoJasper(tipo,'contable/mayor.jasper','Mayor_',$ds,$params)
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"653B6E81-3F3B-48EF-BB7F-26D8D99C5952"}
 */
function onAction_ver_asiento(event) {
	forms.asiento_individual.controller.loadRecords(asiento_cab_id)
	globals.formEnVentana('asiento_individual','ASIENTO_INDIVIDUAL','Consulta de Asiento')
}

/**
 * @param {String} extension
 * @param {String} comienzo_archivo
 * @param {String} comienzo_linea
 * @param {String} marca_txt
 * @param {String} separador
 * @param {String} fin_linea
 * @param {String} fin_archivo
 *
 * @properties={typeid:24,uuid:"61CB7711-E804-4862-83BF-39CA99C99D85"}
 */
function exportaExcel(extension,comienzo_archivo,comienzo_linea,marca_txt,separador,fin_linea,fin_archivo) {
	var cols = new Array('','fecha','leyenda','division','centro','numero','importe_debe_cons','importe_haber_cons')
	var frm = 'mayor_con'
	var $nombre = 'c:/mayor - ' + globals.glegajo + extension
	var jsFile
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		jsFile = plugins.file.createFile($nombre)
	}
	else
	{
		jsFile = plugins.file.showFileSaveDialog($nombre)
	}
	if (jsFile)
	{
		var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
		var bw = new Packages.java.io.BufferedWriter(fw);
		
		var fs = forms[frm].foundset
		if (comienzo_archivo != '')
		{
			bw.write(comienzo_archivo,0,comienzo_archivo.length)
			bw.newLine()
		}
		
		var tbl = databaseManager.getTable( fs)
		forms[frm].elements.fcuenta.requestFocus()
		forms[frm].elements.fcuenta.selectAll()
		var $cta = forms[frm].elements.fcuenta.getSelectedText()
		var linea = comienzo_linea + marca_txt + 'Cuenta: '+$cta + marca_txt + separador + marca_txt + 'Desde: '+globals.gMesDesde +'-'+globals.gAnioDesde + marca_txt + separador + marca_txt + 'Hasta: '+globals.gMesHasta+'-'+globals.gAnioHasta + marca_txt + fin_linea
		bw.write(linea,0,linea.length)
		linea = comienzo_linea
		bw.newLine()
		
		var $sD = null
		var $sH = null
		
		if (fsaldo_anterior > 0)
		{
			$sD = utils.numberFormat(fsaldo_anterior,2)
		}
		else
			if (fsaldo_anterior < 0)
				$sH = utils.numberFormat(fsaldo_anterior,2)
		bw.newLine()
		linea = comienzo_linea + marca_txt + marca_txt + separador + marca_txt + 'Saldo Anterior'+ marca_txt + separador + marca_txt + marca_txt + separador + marca_txt + marca_txt + separador + marca_txt + marca_txt + separador + marca_txt + $sD+ marca_txt + separador + marca_txt + $sH + marca_txt + fin_linea
		bw.write(linea,0,linea.length)
		linea = comienzo_linea
		
		//ESCRIBO EL NOMBRE DE LAS COLUMNAS
		for (var j = 1 ; j < cols.length ; j++)
		{
			if (j != 1)
				linea += separador
			linea += marca_txt + cols[j] + marca_txt
		}
		linea += fin_linea
		bw.newLine()
		bw.write(linea,0,linea.length)
		linea = comienzo_linea

		var cuantos = databaseManager.getFoundSetCount(fs)
		
		var i = 1
		while (i <= cuantos)
		{
			fs.setSelectedIndex(i)
			for (j = 1 ; j < cols.length ; j++)
			{
				var campo = fs.getDataProviderValue(cols[j])
				
				if (solutionModel.getForm(frm).getField(cols[j]).displayType == JSField.TEXT_FIELD  && forms[frm].elements[cols[j]].getValueListName() != null || (tbl.getColumn(cols[j]) == null))
				{
					forms[frm].elements[cols[j]].requestFocus()
					forms[frm].elements[cols[j]].selectAll()
					var campo = forms[frm].elements[cols[j]].getSelectedText()
				}
				else
				{
					if ((tbl.getColumn(cols[j])!= null) && (tbl.getColumn(cols[j]).getType() == JSColumn.NUMBER))
						campo = utils.numberFormat(campo,2)
					else
					{
						if ((tbl.getColumn(cols[j])!= null) && (tbl.getColumn(cols[j]).getType() == JSColumn.DATETIME))
							campo = utils.dateFormat(campo, 'dd-MM-yyyy')
					}
				}
				if (j != 1)
					linea += separador
				if (!isNaN(campo))
					campo = utils.numberFormat(campo,2)
				linea += marca_txt + campo + marca_txt
			}
			linea += fin_linea
			bw.newLine()
			bw.write(linea,0,linea.length)
			linea = comienzo_linea
			i++
		}
		linea = comienzo_linea + marca_txt + 'Total Debe:'+ marca_txt + separador + marca_txt + utils.numberFormat(ftot_debe,2)+ marca_txt + separador + marca_txt + 'Total Haber:' + marca_txt + separador + marca_txt + utils.numberFormat(ftot_haber,2)+ marca_txt + separador + marca_txt + 'Saldo Actual:'+ marca_txt + separador + marca_txt+ utils.numberFormat(fsaldo_actual,2) + marca_txt + fin_linea
		bw.newLine()
		bw.newLine()
		bw.write(linea,0,linea.length)
		if (fin_archivo != '')
		{
			bw.write(fin_archivo,0,fin_archivo.length)
		}
		bw.close()
		fw.close()

		if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
		{
			var mimeType = 'application/vnd.ms-excel'
			if (!plugins.file.writeFile(jsFile.getName(), jsFile.getBytes(), mimeType))
			{
				globals.DIALOGS.showErrorDialog('Error','Ocurrio un error y no se pudo grabar el archivo','OK');
			}
			plugins.file.deleteFile(jsFile.getAbsolutePath())
		}
		else
		{
			application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
		}	
	}
}

/**
 * @properties={typeid:24,uuid:"2157CABF-1473-48CE-9A07-D2FA51E52FFA"}
 */
function xls() {
	jasper('xls')
	//exportaExcel('.xls','<TABLE CELLPADDING="1" CELLSPACING="0" BORDER="0">','<tr><td>','','</td><td>','</td></tr>','</table>')
}

/**
 * @properties={typeid:24,uuid:"71F3856F-3479-4B09-BE1D-9A9FF3905DAA"}
 */
function csv() {
	jasper('csv')
	//exportaExcel('.csv','','','"',';','','')
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"BA9CF5A1-9731-469A-85FB-7DAB3A8A01DC"}
 */
function reporte(event) {
	globals.formEnVentana('mayor_impresion_2','MAYOR','Reporte Mayor')
}

/**
 * Handle changed data.
 *
 * @param {String} oldValue old value
 * @param {String} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"A7A18584-FBC0-4980-B8C7-CC966936ABD9"}
 */
function onDataChangeFechaDesde(oldValue, newValue, event) {
	globals.gMesDesde 	= newValue.substring(0,newValue.indexOf('|'))
	globals.gAnioDesde	= newValue.substring(newValue.indexOf('|')+1,newValue.length)
	return true
}

/**
 * Handle changed data.
 *
 * @param {String} oldValue old value
 * @param {String} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"00584ABF-F2F6-45E8-B904-A77E5F3CE4D1"}
 */
function onDataChangeFechaHasta(oldValue, newValue, event) {
	globals.gMesHasta	= newValue.substring(0,newValue.indexOf('|'))
	globals.gAnioHasta	= newValue.substring(newValue.indexOf('|')+1,newValue.length)
	return true
}
